/**
 * @Project : algorithm-learning
 * @Author : Ruoyu Wang
 * @User : Momenta
 * @DateTime : 2024/3/17 17:59
 */

//小美拿到了一个n*n的矩阵，其中每个元素是0或者1。
//小美认为一个矩形区域是完美的，当且仅当该区域内0的数量恰好等于1的数量。
//现在，小美希望你回答有多少个i*i的完美矩形区域。你需要回答1≤ i <=n的所有答案。
//
//输入描述
//  第一行输入一个正整数n，代表矩阵大小。接下来的n行，每行输入一个长度为n的01串，用来表示矩阵。
//  1<= n <=200
//输出描述
//  输出n行，第i行输出i*i的完美矩形区域的数量.
//
//示例1
//输入
//4
//1010
//0101
//1100
//0011
//输出
//0
//7
//0
//1

#include <iostream>

int main() {
    int n;
    scanf("%d", &n);
    char s[n][n];
    for (int i = 0; i < n; ++i) {
        scanf("%s", s[i]);
    }

    int a[n + 1][n + 1];
    for (int i = 0; i <= n; ++i) {
        a[i][0] = 0;
        a[0][i] = 0;
    }
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            a[i + 1][j + 1] = s[i][j] - '0' + a[i + 1][j] + a[i][j + 1] - a[i][j];
        }
    }

    for (int i = 1; i <= n; ++i) {
        if (i % 2) {
            puts("0");
            continue;
        }
        int res = 0;
        for (int x = i; x <= n; ++x) {
            for (int y = i; y <= n; ++y) {
                int sum = a[x][y] + a[x - i][y - i] - a[x - i][y] - a[x][y - i];
                if (sum * 2 == i * i) res++;
            }
        }
        printf("%d\n", res);
    }

    return 0;
}